package org.hank.demoproject.utils;
//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛

import org.hank.utils.spdh.SpdhUtils;

/**
 * @auth: Hank
 * 邮箱: cs16xiaoc1@163.com
 * 创建时间: 2021/6/16 17:50
 * 描述:
 */
public class HexUtil {
    public static String bytes2HexString(byte[] data) {
        if (data != null && data.length != 0) {
            StringBuilder buffer = new StringBuilder();
            byte[] var2 = data;
            int var3 = data.length;

            for (int var4 = 0; var4 < var3; ++var4) {
                byte b = var2[var4];
                String hex = Integer.toHexString(b & 255);
                if (hex.length() == 1) {
                    buffer.append('0');
                }

                buffer.append(hex);
            }

            return buffer.toString().toUpperCase();
        } else {
            return "";
        }
    }

    public static byte[] hexString2Bytes(String data) {
        if (data != null && data.length() != 0) {
            byte[] result = new byte[(data.length() + 1) / 2];
            if ((data.length() & 1) == 1) {
                data = data + "0";
            }

            for (int i = 0; i < result.length; ++i) {
                result[i] = (byte) (hex2byte(data.charAt(i * 2 + 1)) | hex2byte(data.charAt(i * 2)) << 4);
            }
            return result;
        } else {
            return new byte[0];
        }
    }

    public static byte hex2byte(char hex) {
        if (hex <= 'f' && hex >= 'a') {
            return (byte) (hex - 97 + 10);
        } else if (hex <= 'F' && hex >= 'A') {
            return (byte) (hex - 65 + 10);
        } else {
            return hex <= '9' && hex >= '0' ? (byte) (hex - 48) : 0;
        }
    }
}
